Trò chơi đua xe động vật trong UNITY Engine
114.678 lượt xem;
- Maps.cs
- MapScreen /
- AnimalRacing /
- Scripts /
- Assets /
- project /
1 using UnityEngine;
2 using System.Collections.Generic;
3
4 namespace MapScreen
5 {
6
7 public class Maps : MonoBehaviour
8 {
9
10 private float touchX;
11 private float deltaX;
12 private float offsetX;
13 private float rx;
14
15 private bool isUpdate;
16 public static bool isDragged;
17
18 private int current;
19
20 public List<Sprite> mapSprites;
21 public List<Sprite> lockSprites;
22 public GameObject[] mapObjects;
23 public GameObject[] dots;
24
25 void Start()
26 {
27 int world = Data.getData(Data.KEY_WORLD_MAP);
28
29 for (int i = 0; i < 4; i++)
30 {
31 if (i >= world)
32 {
33 mapObjects[i].GetComponent<SpriteRenderer>().sprite = lockSprites[i - 1];
34 }
35 else
36 {
37 mapObjects[i].GetComponent<SpriteRenderer>().sprite = mapSprites[i];
38 mapObjects[i].AddComponent<InputProcessor>();
39 WorldMapClickListener mapClick = mapObjects[i].AddComponent<WorldMapClickListener>();
40 mapClick.mapIndex = i;
41 }
42 }
43
44 current = world - 1;
45 isUpdate = true;
46 transform.localPosition = new Vector3(-current * 8, transform.localPosition.y, transform.localPosition.z);
47
48 ARController.setBannerVisible(true);
49 }
50
51 void Update()
52 {
53 if (Input.GetButtonDown("Fire1"))
54 {
55 touchX = Input.mousePosition.x;
56 isUpdate = false;
57 }
58 else if (Input.GetButton("Fire1"))
59 {
60 deltaX = Input.mousePosition.x - touchX;
61 transform.localPosition += new Vector3(deltaX / 100, transform.localPosition.y, transform.localPosition.z);
62 touchX = Input.mousePosition.x;
63
64 current = currentWorldMap(transform.localPosition.x);
65
66 offsetX = -8 * current - transform.localPosition.x;
67 if (Mathf.Abs(offsetX) >= 0.3f)
68 {
69 isDragged = true;
70 }
71 UpdateDots();
72 }
73 else if (Input.GetButtonUp("Fire1"))
74 {
75 current = currentWorldMap(transform.localPosition.x);
76
77 offsetX = -8 * current - transform.localPosition.x;
78 rx = transform.position.x + offsetX;
79
80 isUpdate = true;
81 }
82
83 if (isUpdate)
84 {
85 updateMaps();
86 }
87 }
88
89 private void updateMaps()
90 {
91 if (offsetX < 0)
92 {
93 if (transform.localPosition.x > rx)
94 {
95 transform.localPosition += new Vector3(offsetX * 2 * Time.deltaTime, transform.localPosition.y, transform.localPosition.z);
96 }
97 else
98 {
99 transform.localPosition = new Vector3(rx, transform.localPosition.y, transform.localPosition.z);
100 isUpdate = false;
101 }
102 }
103 else
104 {
105 if (transform.localPosition.x < rx)
106 {
107 transform.localPosition += new Vector3(offsetX * 2 * Time.deltaTime, transform.localPosition.y, transform.localPosition.z);
108 }
109 else
110 {
111 transform.localPosition = new Vector3(rx, transform.localPosition.y, transform.localPosition.z);
112 isUpdate = false;
113 }
114 }
115 UpdateDots();
116 }
117
118 private void UpdateDots()
119 {
120 switch (current)
121 {
122 case 0:
123 dots[4].transform.localPosition = new Vector3(dots[0].transform.localPosition.x, dots[0].transform.localPosition.y, dots[4].transform.localPosition.z);
124 break;
125 case 1:
126 dots[4].transform.localPosition = new Vector3(dots[1].transform.localPosition.x, dots[1].transform.localPosition.y, dots[4].transform.localPosition.z);
127 break;
128 case 2:
129 dots[4].transform.localPosition = new Vector3(dots[2].transform.localPosition.x, dots[2].transform.localPosition.y, dots[4].transform.localPosition.z);
130 break;
131 case 3:
132 dots[4].transform.localPosition = new Vector3(dots[3].transform.localPosition.x, dots[3].transform.localPosition.y, dots[4].transform.localPosition.z);
133 break;
134 }
135 }
136
137 private int currentWorldMap(float x)
138 {
139 if (x >= -4)
140 return 0;
141 else if (x < -4 && x >= -12)
142 return 1;
143 else if (x < -12 && x >= -20)
144 return 2;
145 else
146 return 3;
147 }
148
149
150 }
151 }
2 using System.Collections.Generic;
3
4 namespace MapScreen
5 {
6
7 public class Maps : MonoBehaviour
8 {
9
10 private float touchX;
11 private float deltaX;
12 private float offsetX;
13 private float rx;
14
15 private bool isUpdate;
16 public static bool isDragged;
17
18 private int current;
19
20 public List<Sprite> mapSprites;
21 public List<Sprite> lockSprites;
22 public GameObject[] mapObjects;
23 public GameObject[] dots;
24
25 void Start()
26 {
27 int world = Data.getData(Data.KEY_WORLD_MAP);
28
29 for (int i = 0; i < 4; i++)
30 {
31 if (i >= world)
32 {
33 mapObjects[i].GetComponent<SpriteRenderer>().sprite = lockSprites[i - 1];
34 }
35 else
36 {
37 mapObjects[i].GetComponent<SpriteRenderer>().sprite = mapSprites[i];
38 mapObjects[i].AddComponent<InputProcessor>();
39 WorldMapClickListener mapClick = mapObjects[i].AddComponent<WorldMapClickListener>();
40 mapClick.mapIndex = i;
41 }
42 }
43
44 current = world - 1;
45 isUpdate = true;
46 transform.localPosition = new Vector3(-current * 8, transform.localPosition.y, transform.localPosition.z);
47
48 ARController.setBannerVisible(true);
49 }
50
51 void Update()
52 {
53 if (Input.GetButtonDown("Fire1"))
54 {
55 touchX = Input.mousePosition.x;
56 isUpdate = false;
57 }
58 else if (Input.GetButton("Fire1"))
59 {
60 deltaX = Input.mousePosition.x - touchX;
61 transform.localPosition += new Vector3(deltaX / 100, transform.localPosition.y, transform.localPosition.z);
62 touchX = Input.mousePosition.x;
63
64 current = currentWorldMap(transform.localPosition.x);
65
66 offsetX = -8 * current - transform.localPosition.x;
67 if (Mathf.Abs(offsetX) >= 0.3f)
68 {
69 isDragged = true;
70 }
71 UpdateDots();
72 }
73 else if (Input.GetButtonUp("Fire1"))
74 {
75 current = currentWorldMap(transform.localPosition.x);
76
77 offsetX = -8 * current - transform.localPosition.x;
78 rx = transform.position.x + offsetX;
79
80 isUpdate = true;
81 }
82
83 if (isUpdate)
84 {
85 updateMaps();
86 }
87 }
88
89 private void updateMaps()
90 {
91 if (offsetX < 0)
92 {
93 if (transform.localPosition.x > rx)
94 {
95 transform.localPosition += new Vector3(offsetX * 2 * Time.deltaTime, transform.localPosition.y, transform.localPosition.z);
96 }
97 else
98 {
99 transform.localPosition = new Vector3(rx, transform.localPosition.y, transform.localPosition.z);
100 isUpdate = false;
101 }
102 }
103 else
104 {
105 if (transform.localPosition.x < rx)
106 {
107 transform.localPosition += new Vector3(offsetX * 2 * Time.deltaTime, transform.localPosition.y, transform.localPosition.z);
108 }
109 else
110 {
111 transform.localPosition = new Vector3(rx, transform.localPosition.y, transform.localPosition.z);
112 isUpdate = false;
113 }
114 }
115 UpdateDots();
116 }
117
118 private void UpdateDots()
119 {
120 switch (current)
121 {
122 case 0:
123 dots[4].transform.localPosition = new Vector3(dots[0].transform.localPosition.x, dots[0].transform.localPosition.y, dots[4].transform.localPosition.z);
124 break;
125 case 1:
126 dots[4].transform.localPosition = new Vector3(dots[1].transform.localPosition.x, dots[1].transform.localPosition.y, dots[4].transform.localPosition.z);
127 break;
128 case 2:
129 dots[4].transform.localPosition = new Vector3(dots[2].transform.localPosition.x, dots[2].transform.localPosition.y, dots[4].transform.localPosition.z);
130 break;
131 case 3:
132 dots[4].transform.localPosition = new Vector3(dots[3].transform.localPosition.x, dots[3].transform.localPosition.y, dots[4].transform.localPosition.z);
133 break;
134 }
135 }
136
137 private int currentWorldMap(float x)
138 {
139 if (x >= -4)
140 return 0;
141 else if (x < -4 && x >= -12)
142 return 1;
143 else if (x < -12 && x >= -20)
144 return 2;
145 else
146 return 3;
147 }
148
149
150 }
151 }